package cn.cdeden.aiqa.domain.bo;

import lombok.Data;

@Data
public class DifyRetrieveBo {
    /**
     * 检索关键词
     */
    private String query;

    /**
     * 检索参数（选填，如不填，按照默认方式召回）
     */
    private RetrievalModel retrievalModel;

    @Data
    public static class RetrievalModel {
        /**
         * 检索方法：以下三个关键字之一，必填
         * keyword_search 关键字检索
         * semantic_search 语义检索
         * full_text_search 全文检索
         * hybrid_search 混合检索
         */
        private String searchMethod;

        /**
         * 是否启用 Reranking，非必填，如果检索模式为 semantic_search 模式或者 hybrid_search 则传值
         */
        private boolean rerankingEnable;

        /**
         * Rerank模型配置，非必填，如果启用了 reranking 则传值
         */
        private RerankingMode rerankingMode;

        /**
         * 混合检索模式下语意检索的权重设置
         */
        private double weights;

        /**
         * 返回结果数量，非必填
         */
        private Integer topK;

        /**
         * 是否开启 score 阈值
         */
        private String scoreThresholdEnabled;

        /**
         * Score 阈值
         */
        private double scoreThreshold;

        @Data
        public static class RerankingMode {
            /**
             * Rerank 模型提供商
             */
            private String rerankingProviderName;

            /**
             * Rerank 模型名称
             */
            private String rerankingModelName;
        }


    }

}
